Python爬虫核心库Selenium实用笔记

367次阅读
没有评论

共计 3049 个字符,预计需要花费 8 分钟才能阅读完成。

要从经过动态渲染的网页中爬取数据,需要使用 Selenium 库打开一个模拟浏览器访问网页,然后获取渲染后的网页源代码。

实战中通常和 Requests 库结合使用,实现优势互补。如果用 Requests 库能获取到需要的网页源代码,那么优先使用 Requests 库进行爬取;如果用 Requests 库获取不到,再使用 Selenium 库进行爬取。

Selenium 安装

谷歌浏览器

首先查看谷歌浏览器的版本号。单击谷歌浏览器右上角的 ⋮ 按钮,在弹出的菜单中执行 帮助 -> 关于 Google Chrome,在弹出的页面中查看所安装的谷歌浏览器的版本号。

接着下载安装包:

找到与自己谷歌浏览器最接近的的版本,下载对应当前操作系统的安装包。

注意:Chrome 推送新版本更新要小心,因为一不小心点了升级,再运行之前写的程序,就会出现 Chrome 与 chromedriver 版本不一致的问题,导致程序无法正常运行。

最后,安装 ChromeDriver:将下载好的文件解压缩,得到可执行文件“chromedriver.exe”,将其复制到 Python 安装路径下的“Scripts”文件夹中。建议把 ChromeDriver 安装到 Python 的安装路径下,从而让 Python 能更容易地调用 ChromeDriver。

Python 安装路径查询:在命令行窗口中输入 where python 后回车,即可看到 Python 的安装路径。

在命令行窗口中输入 chromedriver 后回车,没有报错就说明 ChromeDriver 安装成功了。

火狐浏览器

geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/

安装 geckodriver:将下载好的文件解压缩,得到可执行文件“geckodriver.exe”,将其复制到 Python 安装路径下的“Scripts”文件夹中。建议把 geckodriver 安装到 Python 的安装路径下,从而让 Python 能更容易地调用 geckodriver。

验证安装

运行以下代码,能够打开浏览器,就说明安装成功了:

from selenium.webdriver import Chrome

browser = Chrome()
url = "https://www.xinpianchang.com/a12867560"
browser.get(url)

浏览器选项设置

在上面验证安装的时候,我们发现 Selenium 打开谷歌浏览器运行完后,浏览器就自动关闭了,都没看清楚。

这时,需要进行浏览器选项设置,向浏览器添加一些实验性功能选项。

from selenium import webdriver

# 打开自定义配置
options = webdriver.ChromeOptions()

# 设置浏览器不会关闭
options.add_experimental_option("detach", True)

# 禁用浏览器扩展
options.add_argument("--disable-extensions")

# 禁用浏览器弹窗
options.add_argument("--disable-popup-blocking")

# 设置浏览器 UA
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
)

browser = webdriver.Chrome(options=options)
browser.maximize_window()

url = "https://www.xinpianchang.com/a12867560"
browser.get(url)

常用 API

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec  # 该模块收集了一系列的场景判断方法
from selenium.webdriver.support.wait import WebDriverWait  # 显示等待

# 打开自定义配置
options = webdriver.ChromeOptions()
# 设置浏览器不会关闭
options.add_experimental_option("detach", True)
browser = webdriver.Chrome(options=options)

url = "https://www.xinpianchang.com/a12867560"
browser.get(url)  # 打开页面

url2 = "https://www.baidu.com/"
browser.get(url2)

browser.back()  # 后退
browser.forward()  # 前进

element = browser.find_element("id", "kw")  # 找到页面中的元素
element.send_keys("爬虫")  # 向输入框发送值

element2 = browser.find_element("id", "su")
element2.click()  # 点击按钮

wait = WebDriverWait(browser, 30)  # 最长等待时间为 30 秒
# 判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见
wait.until(ec.presence_of_element_located(("id", "content_left")))

content = browser.page_source  # 获取页面内容

browser.close()  # 关闭页面

Cookie

from selenium import webdriver
import json

# 打开自定义配置
options = webdriver.ChromeOptions()
# 设置浏览器不会关闭
options.add_experimental_option("detach", True)
browser = webdriver.Chrome(options=options)

url = "https://www.baidu.com/"
browser.get(url)

# 手动登录,登录后提取 cookie
cookies = browser.get_cookies()
cookies_str = json.dumps(cookies)  # 序列化

with open("cookies.txt", "w", encoding="utf-8") as f:
    f.write(cookies_str)

with open("cookies.txt", "r", encoding="utf-8") as f:
    cookies_str = f.read()

cookies = json.loads(cookies_str)

# 向浏览器注入 cookie
for cookie in cookies:
    try:
        browser.add_cookie(cookie)
    except Exception as e:
        print(e)

browser.get(url)

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2023-08-03发表,共计3049字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
767
评论数
207
阅读量
682955
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
123云盘限时福利:登录即送1个月VIP尊享权益!

123云盘限时福利:登录即送1个月VIP尊享权益!

🎁  零成本体验 20T 超大空间与会员加速通道 🎉 活动亮点 登录即送:无需任何复杂操作,登录账号直接领取 ...
最新评论
阿伯手记 阿伯手记 发了:https://aboss.top/moments/1064
吴蛋蛋 吴蛋蛋 快发小年快乐
吴蛋蛋 吴蛋蛋 Ask4Me,这个之前看server酱接入了
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2026年2月 每日精选

2026年2月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 2 月 17 日 国家全民健身信息服务平台 过年...
DrawLink:一键生成链接视觉卡片,提升分享点击率

DrawLink:一键生成链接视觉卡片,提升分享点击率

小贴士 :此站或已变迁,但探索不止步。我们已为您备好「类似网站」精选合集,相信其中的发现同样能为您带来惊喜。
WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror 是一款基于 WebRTC 技术的在线屏幕共享工具,它利用浏览器内置的...